
// export module NameSpaceSyntax {
// }

// ts 命名空间的概念是从.net 中抽取的，在ts中以前称做内部模块，现在叫命名空间
// ts 中命名空间和模块的区别
// 命名空间：用于组织嵌套代码，避免命名冲突，使用 namspace 声明命名空间
// 模块：也叫外部模块，侧重代码的复用，一个模块可能包含多个命名空间，使用 module 声明模块

// 命名空间里的代码默认是私有的，作用域仅限于空间内部，可以使用es6 export 语法暴露命名空间里的成员

// namespace voaSpace {
//     interface Voice {
//         name: string;
//         make(): void;
//     }
//     export class Singer implements Voice {
//         name: string;
//         constructor(name: string) {
//             this.name = name;
//         }
//         make(): void {
//             console.log(this.name + ' is singing');
//         }
//     }

// }

// 使用命名空间.成员 访问对应命名空间内部暴露的成员
// namespace useSyntax {
//     let s = new voaSpace.Singer('小红');
//     s.make();
// }

// 要使用的命名空间内部要暴露的成员依然要用 export 声明
import { FirstName } from "./modules/FirstNameSpace";
let n=new FirstName.TestName('大','三个');
console.log(n);
